auto fib = [&](auto self, int n){
    if (n <= 1) return max(n, 0);
    return self(self, n - 1) + self(self, n - 2);
};
